package com.example.test.mytestapplication.factorytest.Utils;

import android.content.Context;
import android.os.Environment;

import com.example.test.mytestapplication.factorytest.Bean.InfoBean;
import com.google.gson.Gson;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

/**
 * Created by cuige on 2018/10/28.
 */

public class FileUtils {

    private static final String FILE_STATE_DIR = Environment.getExternalStorageDirectory().getPath() + "/ota";

    public FileUtils() {
    }

    public static boolean isDeBug() {
        InfoBean infoBean = getStateFromFile();
        return infoBean.isIsDebug();
    }

    public static boolean isDeBug(Context context) {
        InfoBean infoBean = getStateFromFile();
        return infoBean.isIsDebug();
    }

//    public static boolean setStateToFile(int IOTCloudCode, int recipesCode, int versionCode) {
//        File file = new File(FILE_STATE_DIR);
//
//        if (!file.exists()) {
//            file.mkdirs();
//        }
//
//        File file1 = new File(FILE_STATE_DIR + "/info.txt");
//        if (!file1.exists()) {
//            try {
//                file1.createNewFile();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//
//        FileOutputStream fos = null;
//        OutputStreamWriter osw = null;
//
//        boolean var = true;
//        try {
//            fos = new FileOutputStream(file1);
//            osw = new OutputStreamWriter(fos, "utf-8");
//            InfoBean infoBean = new InfoBean(IOTCloudCode ,recipesCode, versionCode);
//            String fileString = (new Gson()).toJson(infoBean, InfoBean.class);
//            osw.write(fileString);
//            osw.flush();
//            fos.flush();
//            osw.close();
//            fos.close();
//
//            getStateFromFile();
//        } catch (Exception e) {
//            e.printStackTrace();
//            var = false;
//        } finally {
//            if (fos != null) {
//                try {
//                    fos.close();
//                } catch (IOException e) {
//                    e.printStackTrace();
//                }
//            }
//
//            if (osw != null) {
//                try {
//                    osw.close();
//                } catch (IOException e) {
//                    e.printStackTrace();
//                }
//            }
//
//        }
//        return var;
//    }

    public static boolean setStateToFile(InfoBean infoBean) {
        File file = new File(FILE_STATE_DIR);
        if (!file.exists()) {
            file.mkdirs();
        }

        File file1 = new File(FILE_STATE_DIR + "/info.txt");
        if (!file1.exists()) {
            try {
                file1.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        FileOutputStream fos = null;
        OutputStreamWriter osw = null;

        boolean var = true;
        try {
            fos = new FileOutputStream(file1);
            osw = new OutputStreamWriter(fos, "utf-8");
            String fileString = (new Gson()).toJson(infoBean, InfoBean.class);
            osw.write(fileString);
            osw.flush();
            fos.flush();
            osw.close();
            fos.close();
//            getStateFromFile();
        } catch (Exception e) {
            e.printStackTrace();
            var = false;
        } finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            if (osw != null) {
                try {
                    osw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }

        return var;
    }

//    public static boolean setStateToFile(boolean isDebug) {
//        InfoBean infoBean = getStateFromFile();
//        File file = new File(FILE_STATE_DIR);
//        if (!file.exists()) {
//            file.mkdirs();
//        }
//
//        File file1 = new File(FILE_STATE_DIR + "/info.txt");
//        if (!file1.exists()) {
//            try {
//                file1.createNewFile();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//
//        FileOutputStream fos = null;
//        OutputStreamWriter osw = null;
//
//        boolean var = true;
//        try {
//            fos = new FileOutputStream(file1);
//            osw = new OutputStreamWriter(fos, "utf-8");
//            infoBean.setIsDebug(isDebug);
//            String fileString = (new Gson()).toJson(infoBean, InfoBean.class);
//            osw.write(fileString);
//            osw.flush();
//            fos.flush();
//            osw.close();
//            fos.close();
//
////            getStateFromFile();
//        } catch (Exception e) {
//            e.printStackTrace();
//            var = false;
//        } finally {
//            if (fos != null) {
//                try {
//                    fos.close();
//                } catch (IOException e) {
//                    e.printStackTrace();
//                }
//            }
//
//            if (osw != null) {
//                try {
//                    osw.close();
//                } catch (IOException var20) {
//                    var20.printStackTrace();
//                }
//            }
//        }
//
//        return var;
//    }

    public static InfoBean getStateFromFile() {
        File file = new File(FILE_STATE_DIR);

        if (!file.exists()) {
            file.mkdirs();
        }

        File file1 = new File(FILE_STATE_DIR + "/info.txt");
        if (!file1.exists()) {
            try {
                file1.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        FileInputStream fis = null;
        InputStreamReader isr = null;

        InfoBean infoBean;
        try {
            fis = new FileInputStream(file1);
            isr = new InputStreamReader(fis, "utf-8");
            char[] input = new char[fis.available()];
            isr.read(input);
            String result = new String(input);
            isr.close();
            fis.close();
            if (!result.equals("")) {
                infoBean = (InfoBean) (new Gson()).fromJson(result, InfoBean.class);
                return infoBean;
            }

            infoBean = new InfoBean();
            return infoBean;
        } catch (Exception e) {
            e.printStackTrace();

            File file2 = new File(FILE_STATE_DIR + "/info.txt");
            if (!file2.exists()) {
                try {
                    boolean result = file2.createNewFile();

                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }

            infoBean = new InfoBean();
        } finally {
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            if (isr != null) {
                try {
                    isr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
        return infoBean;
    }

}
